package com.ruoyi;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.sql.Types;
import java.util.Collections;

public class AutoGeneratorSQL
{
	public static void main(String[] args) {
		FastAutoGenerator.create("jdbc:mysql://localhost:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8", "root", "root")
				.globalConfig(builder -> {
					builder.author("") // 设置作者
							.enableSwagger() // 开启 swagger 模式
							.fileOverride() // 覆盖已生成文件
							.outputDir("D:\\work-space\\RuoYi-Vue\\ruoyi-system\\src\\main\\java"); // 指定输出目录
				})
				.dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
					int typeCode = metaInfo.getJdbcType().TYPE_CODE;
					if (typeCode == Types.SMALLINT) {
						// 自定义类型转换
						return DbColumnType.INTEGER;
					}
					return typeRegistry.getColumnType(metaInfo);
					
				}))
				.packageConfig(builder -> {
					builder.parent("com.ruoyi") // 设置父包名
							.moduleName("system") // 设置父包模块名
							.entity("domain")
							.service("service")
							.serviceImpl("service.impl")
							.pathInfo(Collections.singletonMap(OutputFile.xml, "D:\\work-space\\RuoYi-Vue\\ruoyi-system\\src\\main\\resources\\mapper")); // 设置mapperXml生成路径
				})
				.strategyConfig(builder -> {
					builder // 设置需要生成的表名
							.addTablePrefix("sys_"); // 设置过滤表前缀
				})
				.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板
				.execute();
	}
}
